Repository navigation
feat(engy): add engy sync module - #8715
Merged
Merged
Conversation
Contributor
|
No actionable findings. |
roykollensvendsen
force-pushed
the
add-engy-sync
branch
from
October 7, 2026 21:24
18cfd2e to
6cd8bfb
Compare
roykollensvendsen
force-pushed
the
add-engy-sync
branch
from
October 7, 2026 21:26
6cd8bfb to
410a236
Compare
Contributor
|
No actionable findings. |
Contributor
|
No actionable findings. |
roykollensvendsen
force-pushed
the
add-engy-sync
branch
2 times, most recently
from
October 9, 2026 09:22
2380ea1 to
8aea963
Compare
roykollensvendsen
force-pushed
the
add-engy-sync
branch
from
October 9, 2026 09:22
8aea963 to
5a78af0
Compare
Contributor
|
No actionable findings. |
4 tasks done
engy publishes prices, the context window and modalities on a public GET /v1/models; the module syncs those and preserves everything else (the input/output split, reasoning_options, interleaved, the other cost keys, provider, experimental, status, base_model). It never creates or deletes: a created file would ship limit.output = 0, so unseen ids become [missing-model] issues, and the unauthenticated list can return an empty data array, so missing files are retained and reported. An authored base_model wins over the slug resolver. Prices round to six decimals, so the hourly run is a no-op. A context_length that no longer equals the authored input + output leaves the file alone and opens a [missing-model] issue, since the public list cannot say which half moved. A price that is not a non-negative number fails the run instead of writing a free model, an empty or unrecognised modality list keeps the authored one, and a row with an empty id is ignored. Registered in sync/index.ts and the direct group, with an engy:sync script, an engy Notes section in sync.md, and 25 tests that read the shipped files. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018k8EL6s5hEtTTMJ8Jjd4Ls
roykollensvendsen
force-pushed
the
add-engy-sync
branch
from
October 11, 2026 14:15
5a78af0 to
484f364
Compare
Contributor
|
No actionable findings. |
Contributor
Author
|
@rekram1-node This one's ready whenever you get to the sync backlog: rebased on today's dev, bot-clean, a no-op against engy's live list. It's the sync half of #5910. |
Contributor
Author
|
A live example of why this module matters: engy raised
|
rekram1-node
enabled auto-merge (squash)
October 16, 2026 06:11
rekram1-node
disabled auto-merge
October 16, 2026 06:11
5 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a sync module for engy, the provider added in #5910. That PR was split so the provider could land first, and this is the module that was taken out of it. Changes since then came from comparing it with the sync modules merged before it. It now keeps every authored field, as the Mistral module does; before, a fixed field list would have stripped v2's new
typefield. It also validates prices and leaves a stale input/output split to a human (both below).engy publishes prices, the context window and modalities on a public
GET https://api.engy.ai/v1/models(no auth). The module keeps those current. While #5910 was open it caught two real changes: kimi-k3's 30% price rise on 09-03 and qwen3.8-27b's larger window on 09-13.What it writes and what it leaves alone
input,output,cache_read),limit.contextandmodalities.reasoning_options,interleaved, any other cost keys,provider,experimentalandstatus. The public list gives only the context window, which on engy is max_input + max_output, so the module never derives the split from it.base_model: an authoredbase_modelwins over the slug resolver.filemaps topdf. Acontext_lengthof 0 or less counts as unreported.context_lengthno longer equals the authoredlimit.input + limit.output, the module leaves the file alone and opens a[missing-model]issue (viaMissingReasoningOptionsError, as Mistral does for API data that contradicts the file), because the public list can't say which half moved. kimi-k3's window change on 10-02 was exactly this case.idis ignored; engy serves one as of 10-09.skipCreates: a new id opens a[missing-model]issue instead of a file, because a created file would shiplimit.output = 0. Today the list and the catalogue match, so the first run opens nothing.deleteMissing: false:{"data":[]}passes the schema, so retired ids are reported, not deleted.The module is registered in
sync/index.ts(alphabetical,directgroup), with anengy:syncscript and an engy Notes section insync.md. It is not onREVIEWED_REASONING_PROVIDERS.Test plan
packages/core/test/engy.test.ts: 25 pass, including the fetch path with an injected fetcher (success and 503) and the registration. Reverting each guard one at a time (split check, price validation, empty-id filter, modality fallback,file→pdf, injected fetch, integer context, field list) fails at least one test. The suite reads the shipped engy files and asserts that a sync round trip leaves them unchanged.bun models:sync engy --dry-run, then a real run, then--dry-runagain, 2026-10-09 and 2026-10-11: 8 unchanged each time, no files touched; the empty-id row engy served on 10-09 is ignoredbun validatebun run testinpackages/sdk: 25 passtsc --noEmitinpackages/core: the same 78 errors as ondev, none of them in engy codedev6633e87